package com.hmdp.utils;


import com.hmdp.dto.UserDTO;

/**
 * 使用ThreadLocal保存用户信息是常规的做法
 * 1.如果使用session获取用户信息，哪里要获取哪里就要依赖session,比例DAO层，很多大型系统各层是分来的，不会依赖servlet
 * 2.session也有线程安全问题，如果同一个用户并发请求，修改同一个session,则session数据安全得不到保证
 * 3，使用ThreadLocal可以解耦合
 * */
public class UserHolder {
    private static final ThreadLocal<UserDTO> tl = new ThreadLocal<>();

    public static void saveUser(UserDTO user){
        tl.set(user);
    }

    public static UserDTO getUser(){
        return tl.get();
    }

    public static void removeUser(){
        tl.remove();
    }
}
